. s בנוסף, המרחק בקשתות על העץ מ- s לכל צומת ב- R הוא מינימאלי. נותן פיתרון ל: מציאת מסלול קצר ביותר מהמקור לכל צומת. גלוי צמתים ברי הגעה מהמקור.

Similar documents
אלגוריתמים 1 דפי עזר

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

Depth-First Search DFS

קובץ שאלות פתורות אביב 2102

תרגול מס' 01 אלגוריתם דיניץ

עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

תכנון אלגוריתמים, אביב 2010, תרגול מס' 7 סריקה לעומק, מיון טופולוגי, רכיבים קשירים היטב. time time 1

הקיטסיגול הרבחה יעדמל בלושמה גוחה

Practical Session No. 13 Amortized Analysis, Union/Find

בעיית שיבוץ משימות.J כל משימה j J מאופיינת על הקלט: קבוצת משימות.t(j) s(j) וזמן סיום ידי זמן התחלה J J של משימות לא חופפות בזמן, הפלט: תת-קבוצה שהיא מ

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

שאלה ) 1 מבחינה של פרופ' נוגה אלון ( G V עם משקלים על הקשתות, ונתון עץ פורש מינימלי של G. נניח

מבני נתונים תרגיל 4 פתרון

הגדרה: משפחת עצים תקרא מאוזנת אם (n.h(t) = O(log

חזרה, מיונים פולינה לוצקר

מבני נתונים תרגיל 5 שאלות לגבי העבודה יש להעלות בפורום של הקורס או בשעות הקבלה של המרצה או המתרגל האחראיים על העבודה.

מבוא לתכנות ב- JAVA תרגול 7

סיבוכיות זמן ריצה רדוקציות ושלמות ב- NP המחלקה P הגדרה: = המחלקה NP הגדרה: שפה סגירות שפות הגדרה: רדוקציה

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

סיכום מבני נתונים )שיעור( מרצה: אלכס סמורודניצקי. להערות: אמיר נווה

עצים ועצי חיפוש חומר קריאה לשיעור זה. Chapter 5.5 Trees (91 97) Chapter 13 Binary Search Trees ( )

הקיטסיגול הרבחה יעדמל בלושמה גוחה

תרגול 11 תור עץ חיפוש בינארי

םימתירוגלאו םינותנ ינבמ המירעו תינס, חמ רות רקצול הנילופ

יסודות מבני נתונים. תרגול :9 ערימה - Heap

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר

זו מערכת ישרת זוית )קרטזית( אשר בה יש לנו 2 צירים מאונכים זה לזה. באותו מישור ניתן להגדיר נקודה על ידי זוית ורדיוס וקטור

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

תרגול 8. Hash Tables

תרגול נושאי התרגול כעץ חיפוש בינארי : העץ הימני. Inorder(x) 1) if x NULL 2) then Inorder(left(x)) 3) print key[x] 4) Inorder(right(x))

מ ש ר ד ה ח י נ ו ך ה פ ד ג ו ג י ת א ש כ ו ל מ ד ע י ם על ה ו ר א ת ה מ ת מ ט י ק ה מחוון למבחן מפמ"ר לכיתה ט', רמה מצומצמת , תשע"ב טור א'

טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

בוחן בתכנות בשפת C בצלחה

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

מבוא למחשב בשפת פייתון

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

ASP.Net MVC + Entity Framework Code First.

A R E Y O U R E A L L Y A W A K E?

פרק מיון וחיפוש - לשם מה? הגדרה

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of


המבנה הגאומטרי של מידה

בחינת בגרות, תשע"ז מס' שאלון: מדעי המחשב שאלה 1. Java. blog.csit.org.il הילה קדמן

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

מושגים בסיסיים תלמידים והורים יקרים,

P NP DTIME( nc ) :,A p B

מבוא לחישוב נומרי הכנה לקראת המבחן

אוניברסיטת בן גוריון בנגב

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

שנת לימודים סמסטר מועד ניתן בתאריך מרצה מתרגל שאלות. 0, 3 r. n ויהי : 2 איתי בארלי גרסה / /1/14 פרופ' אהוד לרר איתי בארלי. a.

פרק היררכי

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

תרגיל בית מספר 6 )אחרון!( - להגשה עד 21 ביוני )יום ראשון( בשעה ::225

THINKING ABOUT REST THE ORIGIN OF SHABBOS

ANNEXURE "E1-1" FORM OF IRREVOCABLE STANDBY LETTER OF CREDIT PERFORMANCE OF CONTRACT (WHERE PRICES ARE NOT LINKED TO AN ESCALATION FORMULA)

פתרון בעיות תכנון בגרף

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

קריאת גרפים. לצפייה בפתרון בווידאו לתרגילים שבחוברת, כנסו ל "קריאת גרפים" בשאלון 801 שבאתר 116

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

QUANTUM COMPUTATION. By Uri Kanonov

מדעי המחשב מעבר על הרשימה למציאת המקום המתאים לאיבר. החזרת ה- value של ההפניה למינימום. הנחה: הרשימה לא ריקה.

A Long Line for a Shorter Wait at the Supermarket

פרק יעילות היעילות של קריטריון המקום עוסק בנושאים דומים לאלה של קריטריון הזמן. אנו נתרכז בחישובי היעילות של מדד הזמן.

Reflection Session: Sustainability and Me

הצגת המשחק תלמידים משחקים סיום. פתיחה 12 min. min. min. min פתיחה. Copyright 2015

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

פתרון בעיית צביעת הגרפים בעזרת אלגוריתם גנטי ואלגוריתמי Beam-Search

4...Informed Search Strategies Partial Order Planning 29...Hierarchical Decomposition Reenforcement Learning 40...Unsupervised Learning

7 קרפ תויגול,תויטמתירא תודוקפ הזזהו

בהצלחה! (MODULE C) Hoffman, Y. (2014). The Universal English-Hebrew, Hebrew-English Dictionary

אנגלית (MODULE E) בהצלחה!

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

1. מספרים מרוכבים צורות אלגברית ווקטורית של מספרים מרוכבים. הוא זוג סדור. הגדרה 1.1. מספר מרוכב z של מספרים ממשיים. ו- y

מדדי מרכז הגדרה: מדדים סטטיסטיים המשקפים את הנטייה המרכזית של ההתפלגות מדדי מרכז מרכז ההתפלגות

במבוא מורחב למדעי המחשב בשפת פייתון

Genetic Tests for Partners of CF patients

אוניברסיטת בן גוריון בנגב

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

כיורי גרניט כיורי מטבח עשויים גרניט להתקנה שטוחה, עמידות מלאה בפני שריטות וכתמים, עמידות בחום עד C ניקוי קל ומהיר צבע שאינו דוהה

מבוא למדעי המחשב בשפת ++C - חוברת תרגילים

מספר מילה. you very hungry am דוגמאות: decision trees ההודעה.

State Pattern מימוש מכונת מצבים (FSM) מבוא בעיה תמיכה ועדכונים עדכון מס' 48 מאי 2002

אוסף תרגילים למעבדה ביוניקס - 4

חוק זכויות הסוכן חוק חוזה סוכנות )סוכן מסחרי וספק(

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

בהצלחה! משך הבחינה: מבוא למדעי המחשב ד"ר פז כרמי פרופ' מייק קודיש ד"ר חן קיסר ד"ר צחי רוזן שם הקורס: מבוא למדעי המחשב מספר הקורס:

אנגלית ספרות בהצלחה! /המשך מעבר לדף/ נספח: כישורי חשיבה )לפרק ראשון ושני( או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

מספר השאלון: Thinking Skills נספח: כישורי חשיבה )לפרק ראשון ושני( א נ ג ל י ת (MODULE F) ספרות )מילון הראפס אנגלי-אנגלי-ערבי(

מבנה ההרצאה חלק א' 1 (הסבר על הסימולטור.Torcs 2 (הסבר על תחרות EvoStar 2010 ביחד עם הדגמה של.GA חלק ב' הסבר על המאמר

Parts of Speech

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

הטכנולוגיה בחינוך ד ר קובי גל אוניברסיטת בן גוריון בנגב

Checkers Cheaters Eliran Moyal & Moti Berger

מבוא למדעי המחשב בשפת ++C - חוברת תרגילים

ãówh,é ËÓÉÔê ÌW W É Å t" Y w f É ËÓÉÑ É èw É f Ñ u ð NNM YóQ' ÌW W É Y ÉgO d óqk É w f ym Éd É u ð NNM ÌWNQMH uqo ð NNM ÌWNQMH

1.1. הקדמה (דיסק). מדריכי. (מחיצות) Link

Transcription:

:BFS חיפוש לרוחב. בנוסף, המרחק R ומייצר עץ שבו כל הצמתים V, E סורק את BFS בקשתות על העץ מ- לכל צומת ב- R הוא מינימאלי. נותן פיתרון ל: מציאת מסלול קצר ביותר מהמקור לכל צומת. גלוי צמתים ברי הגעה מהמקור. שהם ברי הגעה מ-. עבור הרעיון: החיפוש בוחן בכל איטרציה יגלה את כל הצמתים במרחק "חזית" המורכבת מצמתים במרחק לפני כל הצמתים במרחק מ- מ- 0 האלגוריתם. 1. V, E קלט: גרף וצומת מקור המרחק מ-, d[ ] פלט: לכל, V ל-. for each u V \ { } : Q em pty d [ u ], p[ u ] null. enqueue Q, whle Q not empty do: u dequeue Q for each n ad u do: f d [ ] d [ u ] 1 p[ ] u enqueue Q,. O V E סיבוכיות:,,. dt dt u u, למה- 1 : לכל קשת מתקיים:. d [ ] dt, למה- 2 : בסיום האלגוריתם, הערך [ ]d מקיים לכל צומת },,,{ אז מתקיים: 1 n למה- 3 : נניח שבמהלך ביצוע BFS התור מכיל את. d[ ] d[ ] 1 r d[ ] d[ ] 1 1 כלומר: בתור יש צמתים משתי רמות לכל היותר, ויש מונוטוניות ברמות הצמתים שבתור.. d [ ] d [ ] אז בזמן ש-, מסקנה: נניח ש- נכנס ל- Q לפני נכנס לתור מתקיים: משפט: הרצת BFS על גרף )מכוון או לא מכוון( עם צומת מקור ובסיום מגלה כל צומת ישיג מ-,. d [ ] dt, 1

מיון טופולוגי: u אז, u E כך שאם V מיון טופולוגי של הוא סידור ליניארי של לפני בסידור. אם בגרף יש מעגל מכוון אז אין לגרף מיון טופולוגי. raph) -DA (Drected Acyclc גרף מכוון שאין בו מעגלים מכוונים. אלגוריתם למיון טופולוגי של :DA.DA שהוא V, E קלט: גרף. S פלט: מיון טופולוגי של הגרף. 1. חשב את קבוצת כל המקורות בגרף, נסמנה ב-. l 1.4 אתחל :V.4 כל עוד S 4.1 בחר L l 4.4 קבע 4.4 קבע. l l 1 4.3 הסר את מהגרף, יחד עם הקשתות היוצאות ממנו. 4.3 קבע }. S S \ { { u : u E} 4.3 הוסף ל- S את כל הצמתים מבין שהם מקורות. 3. החזר את סיבוכיות:. O V. L E V, קיים מקור. V, E טענה- 1 : בכל DA כך ש סיבוכיות ואורך הקלט: לצורך ייצוג מספר בגודל לנו מספר. אם יש log n ביטים ולכן אורך הקלט הוא: m log 2 n נדרשים: n n בקלט, הסיבוכיות צריכה להיות פולינומיאלית ב- היא פולינומיאלית דווקא ב- אם נתון לנו גרף, n נאמר שהאלגוריתם- פסאודו פולינומיאלי. V, E אז הסיבוכיות צריכה להיות פולינומיאלית ב-. log n אם זה לא המצב והסיבוכיות. V, E 2

גרף דו-צדדי: האלגוריתם מכריע האם, V, E בהינתן גרף לא מכוון הוא גרף דו-צדדי. הוא גרף דו-צדדי אם"ם טענה- 1 : יהא V, E גרף לא מכוון, ויהא. V u E d u d )שקילות מודולו.)4 2 u p יהא. L, טענה- 2 : יהא V, E גרף דו-צדדי עם צדדים R המסלול הוא זוגי אם"ם נמצאים באותו צד. מסלול בין ו-. אזי אורך מתקיים u E. d u d 2 u,. V p 1. הרץ BFS מצומת שרירותי דו צדדי" אם"ם לכל קשת. O V E.4 החזר " סיבוכיות: אפיון נוסף: גרף הוא דו-צדדי אם"ם הוא אינו מכיל מעגלים באורך אי-זוגי. מסלולים זוגיים קצרים ביותר: רדוקציה: שכפול צמתי הגרף לקבוצה- 1 וקבוצה- 4 וחיבור קשתות בין צמתים מעותקים בקבוצות שונות, אשר בגרף המקורי הייתה קשת שחיברה בין הצמתים המתאימים. זהו גרף דו-צדדי.. een 1 1. d d ל-. V אז טענה: יהא V, E גרף לא מכוון ויהא. V וצומת V, E קלט: גרף פלט: לכל צומת, V אורך המסלול הקצר ביותר מ- אם לא קיים מסלול כזה. 1. בנה את הגרף 1 V V 2, E )לכל קשת מבין המסלולים שאורכם זוגי, או 1 2 2 1 u, u E נגדיר שתי קשתות u E 1.. d 1 4. הרץ BFS על החל מהצומת 1.4 לכל צומת V סיבוכיות: החזר:. O V E 3

:DFS חיפוש לעומק נותן פיתרון ל: מציאת מעגלים בגרף. מציאת שורשים בגרף. כיוון קשתות הגרף. הרעיון: u, u האלגוריתם ינסה להתקדם לעומק, כאשר נבקר בצומת, אם ישנה קשת לצומת שעוד לא נתגלה- נחצה את הקשת ונמשיך את החיפוש מ-. u.v V, E קלט: גרף ב- וצומת for each u 0 for each u הצומת שגרם ל-, p [ ו-[ זמן הגילוי של - d[ ] פלט: לכל V סימון: נקבל צבע לבן או אפור. להתגלות. V : color[ u ] = whte p[ u ] = null V : DFS_VISIT( u ): f color( u ) = whte then: DFS_VISIT( u ) color( u ) = gray d [ u ] for each n ad u : f color( ) = whte then: color( u ) = black. f [ u ] p[ ]. u זמן היציאה האחרון מ- - f [ u] u DFS_VISIT( ). color[ u ]. O V E סיבוכיות: הערות: בהרצות שונות ייתכנו פלטים שונים לאלגוריתם.. ימצא גם צמתים שאינם ישיגים מ- DFS DFS אינו בהכרח מוצא מרחקים קצרים ביותר. 4

, p[ ] null זהו תת גרף של, בסיום האלגוריתם נקבל גרף שבו לכל צומת שעבורו אל תופיע הקשת מהאב-[ [ p כפי שנמצא ע"י האלגוריתם. סיווג קשתות: קשתות עץ: מופיעות ב-. u, קשתות אחוריות: קשת כקשת אחורית(. שמחברת את u לאב קדמון של u בעץ DFS )לולאה עצמית תחשב.DFS בעץ u לצאצא של u מ- u, כל קשת. קשתות קדמיות: קשתות שאינן ב- קשתות חוצות: כל הקשתות האחרות ב- בין צמתים באותו עץ DFS ללא יחס אב קדמון-צאצא, או בין עצי DFS שונים. תכונות של :DFS הגרף הוא יער, היות והמבנה של עצי החיפוש משקף את הקריאות לDFS_VISIT. u היה אפור ולפני שקבענו ערך נתגלה כאשר u בעץ DFS אם הוא צאצא של הצומת ל[ u. f [ תכונת הסוגריים: נייצג את הגילוי של צומת ע"י סוגר שמאלי ) סוגר ימני ואת סיום הטיפול ב- ). אז ההיסטוריה של גילוי וסיום הטיפול בצמתים מגדירה ביטוי שבו הסוגריים מקוננים היטב. למשל:. ( u ( ( y( xx) y) ) u )( w( zz) w) משפט הסוגריים: בכל חיפוש לעומק בגרף מכוון או לא מכוון בדיוק אחד מ- 4 התנאים:, לכל שני צמתים u,.1 האינטרוולים הצמתים d [ u ], f [ u ] ו- d [ ], f [ ]. u,.4 האינטרוול.4 האינטרוול מתקיים ע"י זרים לחלוטין ואז אין קשר של אב קדמון/צאצא בין.DFS בעץ צאצא של u ואז, d [ ], f [ ] מוכל ממש ב d [ u ], f [ u ] d [ ], f [ ] מוכל ממש ב- d [ u ], f [ u ] u ואז אב קדמון של בעץ \.DFS u], d[ הזמן בו מסקנה: צומת הוא צאצא של צומת u ביער DFS עבור גרף מכוון/לא מכוון. d [ u ] d [ ] f [ ] f [ u ] u אם"ם משפט המסלול הלבן: ביער DFS מכוון/לא מכוון, צומת הוא צאצא של u אם"ם בזמן התגלה, ניתן להגיע מ- u ל- על מסלול המורכב כולו מצמתים לבנים.. F אז תכונות מהתרגול: בגרפים מכוונים יש רק קשתות עץ או קשתות אחוריות. הרצת DFS תסווג קשת כאחורית אם"ם יש מעגל בגרף. E נסמן את הקשתות שסווגו כאחוריות ב-, V, E על גרף מכוון DFS בהרצת.DA הם V, E \ F ו- V הגרפים, F הסדר ההפוך לזה המושרה ע"י זמני הנסיגה מהצמתים הוא מיון טופולוגי. בכל הרצת,DFS עץ ה- DFS האחרון מכיל את - R קבוצת שורשי הגרף. 5

C ב- V כך שלכל זוג רכיבים קשירים היטב: רכיב קשיר היטב: בגרף מכוון V, E זו קבוצה מקסימאלית של צמתים יש מסלול מכוון מ- C ב-,u צמתים היטב(. ל- u ומ- u הגרף ההפכי: עבור גרף מכוון V, E הוא ל-. )ייתכן מצב בו צומת בודד הוא הכי קשיר T,, E u u E T V, E כך ש T T דהיינו, הופכים את כיווני הקשתות ב-. ב- ניתן ליצור את וב- יש אותם רכיבים קשירים היטב.. O V ב- E f [ ] T 1. מצא בעזרת DFS את ערכי לכל צומת.. f [ ] T 4. הפוך את כיווני הקשתות וצור את הגרף. 4. הפעל DFS על הגרף ההפוך אבל בחר את הצמתים בלולאה הראשית לפי סדר יורד של 3. כל עץ DFS שמתקבל הוא רכיב קשיר היטב.. O V E סיבוכיות: u, ב- C ב-. C נניח שיש ויהיו. C, למה- 1 : יהיו C שני רק"ה שונים בגרף מכוון- ו u, m n d U d u uu m ax f U f u u, uu ל-. : U מסלול מכוון מ- u ל- u ב-, אז לא ייתכן מסלול מכוון מ V. V, E נניח שיש קשת מסקנה: גרף הרכיבים הוא.DA הרחבת הגדרות "זמן גילוי" ו"זמן סיום" לקבוצת צמתים, C, למה- 2 : יהיו C שני רק"ה בגרף מכוון כאשר. f C f C אז, u C, C u, E T. V, E נניח שיש קשת C, מסקנה: יהיו C רק"ה שונים בגרף מכוון כאשר. f C f C אז:, u C, C גרף הרכיבים הקשירים היטב: גרף היטב ב- SC C )Strongly Connected Component( הוא גרף אשר צמתיו מייצגים רכיבים קשירים u u, וקשת מחברת בין שני צמתים אם"ם קיים צומת ברכיב הקשיר היטב המיוצג ע"י. וקיים צומת ברכיב הקשיר היטב המיוצג ע"י כך ש- u קשת ב- u 6

u אם"ם יחיד ביער ה- DFS DFS מתקבל עץ, u מציאת שורשי הגרף: טענה- 1 : בהרצת DFS על גרף מכוון החל מצומת הוא שורש של הגרף. אלגוריתם למציאת שורש אחד: קלט: גרף מכוון. V, E. R פלט: שורש של הגרף או הודעה כי. R. 1. הרץ DFS על 4. נסמן ב- את שורש עץ ה- DFS האחרון. 4. הרץ DFS על. החל מ- 3. אם התקבל עץ DFS אחד החזר את סיבוכיות:. O V E, אחרת החזר כי R R טענה- 2 : אם אז הוא רכיב קשיר היטב.. R SC C R טענה- 3 : אם אז הצומת הראשון במיון הטופולוגי של הוא p אם. רכיבים קשירים היטב ועצי :DFS הוא מסלול מ- u ל-,DFS אז לכל ריצת. כאשר U מוכל בשלמותו טענה- 4 : יהא V, E גרף מכוון ויהא U רק"ה של U. מוכל בשלמותו ב- p אז,u U U רק"ה של V, E גרף מכוון, ויהא משפט: יהא בעץ.DFS גרפים קשירים למחצה: ל- u, V, E קשיר למחצה: גרף מכוון שעבור כל זוג צמתים קיים מסלול מכוון מ- u או מסלול מכוון מ- ל- u )או שניהם(.. V, E קלט: גרף מכוון פלט: הכרעה בדבר האם 1. חשב את SC C. 4. הרץ מיון טופולוגי על SC C. קשיר למחצה. 4. הכרז "הגרף קשיר למחצה" אם"ם יש קשת בין כל שני צמתים עוקבים במיון. 7

עצים פורשים מינימאליים: u, בהינתן גרף קשיר לא מכוון V, E שבו לכל קשת פורש של הגרף שסה"כ משקל הקשתות בו הוא מינימאלי. הרעיון: יש משקל, w u, יש למצוא עץ נתקדם ע"י צביעת קשתות תוך הוספת קשתות קלות לעץ והשמטת קשתות כבדות. האלגוריתם יקיים בכל של את שמורת הצבע- קיים עפ"מ שמכיל את כל הקשתות הכחולות ואף אחת מהקשתות האדומות. חתך :)cut( חתך בגרף V, E הוא חלוקה של שקשת חוצה את החתך אם קצה אחד שלה ב- האלגוריתם הגנרי: X לשתי קבוצות זרות V ו-.V \ X נאמר והשני ב- X.V \ X הכלל האדום: בחר מעגל חסר קשתות אדומות וצבע באדום את הקשת הלא צבועה הכבדה ביותר. הכלל הכחול: בחר מעגל חסר קשתות כחולות וצבע בכחול את הקשת הלא צבועה הקלה ביותר. האלגוריתם החמדן: הפעל את הכלל האדום והכחול )לא דטרמיניסטית( עד שכל קשתות הגרף צבועות. הקשתות הכחולות מהוות עפ"מ. משפט- 1 : האלגוריתם הגנרי צבוע את כל הקשתות של גרף קשיר האלגוריתם של :Prm 1. הגדר עץ T והכנס לתוכו צומת כלשהו בגרף. 4. כל עוד יש בגרף קשתות לא צבועות: 4.1 בחר קשת קלה ביותר בחתך בין T לשאר הגרף וצבע אותה בכחול. 4.4 הכנס את הצומת אליו הייתה הקשת אל.T 4.4 צבע באדום את כל הקשתות האחרות בחתך שמובילות אל הצומת. 4. כל הקשתות הכחולות מגדירות עפ"מ. סיבוכיות במימוש בעזרת מערך: סיבוכיות במימוש בעזרת ערימה: האלגוריתם של :Krukal. O V. O E log V 2 1. מיין את הקשתות לפי משקל בסדר לא יורד ואתחל את 4. עבור על הרשימה הממוינת ולכל קשת e בצע: T להיות ריק. 4.1 אם e 4.4 אחרת, צבע את 4. החזר את אוסף קשתות סיבוכיות: סוגרת מעגל בעץ הכחול, צבע את e e בכחול ובצע: באדום. T T {} e T כעפ"מ. log log O E E O E V )כי 2.) log E log V 2 log V ומקיים את שמורת הצבע. Krukal מגדל את העפ"מ כיער ההולך ומתאחד, Prm מתחיל מעץ קטן ובכל שלב מוסיף לו צומת. האלגוריתמים הללו הם "שלמים"- כל עפ"מ יכול להימצא על ידם. 8

עפ"מ צהוב ביותר: w e כל קשת בגרף צבועה בצהוב או בשחור. נרצה לתת לקשתות צהובות עדיפות על-פני קשתות שחורות מאותו משקל. לשם כך נגדיר פונקצית משקל חדשה: 2 w e 1/ n e yellow w e otherw e טענה- 1 : T הוא עפ"מ צהוב ביותר לפי פונקצית המשקל w אם"ם המשקל. w הערה: המונוטוניות של משקלי העצים נשמרת ללא קשר לצבע הקשתות. קלט: גרף לא מכוון וקשיר V, E ופונקצית משקל פלט: עפ"מ צהוב ביותר של 1. חשב את פונקצית המשקל T הוא עפ"מ לפי פונקצית. w : E N.. w 4. מצא עפ"מ T לפי פונקצית המשקל w והחזר את סיבוכיות: T כפלט.. O E log V הערה: בבעיית עפ"מ, כל שמשנה הוא סדר המשקלות ולא ערך המשקלות עצמם. ולכן אם שתי פונקציות משקל שומרות על אותו יחס סדר בין המשקלות, כל עפ"מ לפי פונקציה ראשונה יהיה עפ"מ אם"ם הוא עפ"מ לפי הפונקציה השנייה. מספר קשתות ממשקל זהה בעפ"מ: טענה- 2 : יהא V, E גרף לא מכוון וקשיר עם פונקצית משקל. w : E R אז לכל משקל נתון, כל עפ"מ של מכיל את אותו מספר של קשתות ממשקל זהה.. e E וקשת, w : E R האם קיים עפ"מ המכיל קשת מסוימת. האלגוריתם הלא יעיל: קלט: גרף V, E לא מכוון וקשיר עם פונקצית משקל.T פלט: הכרעה בדבר האם קיים עפ"מ של 1. צבע את המכיל את. e e בצהוב ואת שאר הקשתות בשחור. 4. הרץ את האלגוריתם למציאת עפ"מ צהוב ביותר. נסמן את העץ המתקבל ב- 4. החזר "כן" אם"ם סיבוכיות: e. O E log V היא קשת ב- T. e e מכיל קשת, e טענה- 1 : קשת e נמצאת באיזשהו עפ"מ של כך ש-. w e w e האלגוריתם היעיל:.1 בנה את הגרף V, E כך ש- אם"ם כל מעגל המכיל את E e E : w e w e 4. החזר "כן" אם"ם לא קיים מסלול המחבר בין שני צמתים. ב- u, 9

. O V E סיבוכיות: האם קשת מסוימת מופיעה בכל העפ"מים: האלגוריתם הלא יעיל:. e E וקשת, w : E R V, E קלט: גרף לא מכוון וקשיר עם פונקצית משקל.T פלט: הכרעה בדבר האם כל עפ"מ של 1. צבע את מכיל את הקשת. e e בשחור ואת שאר הקשתות בצהוב. 4. הרץ את האלגוריתם למציאת עפ"מ צהוב ביותר. נסמן את העץ המתקבל ב- 4. החזר "כן" אם"ם e היא קשת ב- T.. O E log V סיבוכיות: אלגוריתם לא יעיל נוסף: 1. חשב את משקלו של עפ"מ של 4. הסר את. e וחשב את משקלו של עפ"מ בגרף החדש )אם בכלל קיים(. 4. אם לא קיים עפ"מ בגרף החדש, או שמשקלו של העפ"מ בגרף החדש גדול ממשקלו של העפ"מ בגרף המקורי, החזר: "כן". אחרת, החזר: "לא". סיבוכיות:. O E log V e e טענה- 2 : קשת e נמצאת בכל עפ"מ של אם"ם כל מעגל המכיל את מכיל קשת כך ש-. w e w e האלגוריתם היעיל: 1. בנה את הגרף E e E : w e w e \ { e} כך ש- V, E. ב- u, 4. החזר "כן" אם"ם לא קיים מסלול המחבר בין שני צמתים. O V E סיבוכיות: 11

מסלולים קלים ביותר:, w u, המשקל u, V, E מסלול: בהינתן גרף מכוון/ לא מכוון שבו לכל קשת משקל. k,. w p w 1,. w p dt u 1 p p 0 1 k של מסלול מסלול קל ביותר: מסלול קצר ביותר מ- u הוא סכום המשקלות על הקשתות הוא כל מסלול שמקיים:, p גם הוא קל ביותר. ל- מסלולים קצרים ממקור יחיד: טענה- 1 : יהי p מסלול קל ביותר מ- ל- u אזי כל תת-מסלול של,, טענה- 2 )אי-שוויון המשולש(: לכל קשת e u מתקיים: u w u הרעיון: נעדכן כל הזמן הפרות של אי-שוויון המשולש. d, האלגוריתם הגנרי:, d 0 ולכל.1 d u, 4. כל עוד יש קשת עבורה סימוני מפרים את אי-שוויון המשולש בצע שיפור מקומי:, d d u w u 4. כשאין קשת עליה ניתן לבצע שיפור מקומי, אז לכל צומת מתקיים:. d. האלגוריתם של דייקסטרה: קלט: גרף ממושקל מכוון ללא קשתות שליליות וצומת פלט: לכל צומת, -. d dt. d 0 אתחל d ואתחל.1 לכל V.) d קבוצת הצמתים עבורם - Q ( Q.4 ואתחל V.4 כל עוד Q בצע: d u צומת u בעל סימון מינימאלי. 4.1 מצא ב- Q. u, u, 4.4 הוצא את u מ- Q ולכל קשת בצע שיפור סיבוכיות:. O E log V d כאשר u הוצא מ-. Q אם הוצא מ- Q באיטרציה העוקבת אז:. Q מ- אינו משתנה אחרי הוצאת, d u הערך d u טענה- 1 : יהי. d u d מסקנה- 1 : הטענה נכונה גם לאיטרציות שאינן עוקבות. מסקנה- 2 : הסימון של צומת,, d d u w u כלומר- לא u, טענה- 2 : בסיום ריצת האלגוריתם לכל קשת מתקיים: ניתן לשפר מקומית. 11

האלגוריתם של בלמן-פורד:. V, E קלט: גרף מכוון ממושקל, ללא מעגלים שליליים וצומת,. d dt פלט: לכל צומת -. d ואתחל 0. d אתחל:.1 לכל V.4 בצע V 1 פעמים: בצע שיפור מקומי אם צריך. u, 4.1 לכל קשת. O V E סיבוכיות: k k ל- טענה: לכל צומת אם קיים מסלול קל ביותר מ-, שמכיל קשתות, אז לאחר איטרציות:,. d dt e a, b מציאת מסלולים קלים ביותר עם קשת אחת שלילית: קלט: גרף מכוון V, E עם משקלות אי-שליליים על הקשתות, פרט לקשת אחת שמשקלה שלילי. וכן, הגרף חסר מעגלים שליליים. ונתון צומת. V ל-., V בעזרת שתי הרצות דייקסטרה. משקל המסלול הקל ביותר מ-, V db d. פלט: לכל צומת 1. הסר את e מ- 4. בגרף המתקבל חשב את ואת לכל. m n d a w e d, d b.4 לכל צומת V החזר את הערך:. O V E log V סיבוכיות: :All-Par Shortet Path w : E R h h : V טענה- 1 : תהא R באופן הבא: לכל קשת פונקצית משקל המתאימה לכל צומת מספר ממשי. נגדיר h u E נגדיר:. w u h u w u h אזי:. w h w מ- u ל- הוא קל ביותר לפי אם"ם הוא קל ביותר לפי.1 מסלול p. w h 4. אין מעגלים שליליים לפי w : E R V, E קלט: גרף מכוון עם פונקצית משקל על הקשתות ללא מעגלים שליליים. פלט: משקל מסלול קל ביותר מכל צומת לכל צומת. V, E 1. בנה גרף כך ש-{} V V ו- } V. E E { : לכל 4. חשב את בעזרת האלגוריתם בלמן-פורד. 0. w w u u 4. חשב את פונקצית המשקל 12

3. מכל צומת u V לפונקצית המשקל הרץ דייקסטרה לחישוב משקל מסלולים קלים ביותר מ- u לכל הצמתים, ביחס w. נסמן את הערך המתקבל ב-. d u,. d u u, 3. עבור כל זוג צמתים u, V החזר כפלט: סיבוכיות: 2. O V EV log V מציאת מעגל שלילי בגרף: קלט: מטריצת שערי חליפין A של n סוגי מטבעות. פלט: קיומה של סדרת החלפת מטבעות המבטיחה לנו רווח., 1. בנה את הגרף V, E על n צמתים. כל צומת ייצג מטבע. בין כל זוג צמתים קשת עם משקל. w log,, A ונגדיר. w, 4. הרץ את בלמן-פורד מצומת שרירותי כמוהו. סיבוכיות: 3 O n. O VE תהיה V להכרעה בדבר קיומו של מעגל שלילי בגרף, והחזר הערה: מכיוון שכל צמתי הגרף הם שורשים, אם קיים מעגל שלילי אז הוא ישיג מכל צומת ולכן ניתן לבחור בשלב )4( צומת שרירותי. 13

אלגוריתמים חמדניים: בגישה חמדנית מבצעים בכל שלב את הצעד הטוב ביותר כרגע. קבוצה ב"ת גדולה ביותר בגרף אינטרוולים: n נתונות משימות, לכל משימה נתון זמן התחלה לבצע בכל רגע נתון משימה אחת לכל היותר. גרף אינטרוולים: גרף לא מכוון כך ש: 1. אוסף הצמתים הם אינטרוולים. 4. יש קשת בין שני אינטרוולים אם:ם הם נחתכים. f וזמן סיום מחפשים תת-קבוצה של צמתים שבין כל שניים אין קשת- "זרים בזוגות". קבוצה בלתי תלויה: קבוצה X V שבה לכל u, X אין קשת. S a,, a לכל משימה זמן התחלה קלט: אוסף משימות 1 n פלט: תת-קבוצה מקסימאלית. יש מכונה בודדת המסוגלת. u, E וזמן סיום. f.1 אתחל A.) f f f 1 2 n 4. בנוסף אתחל f 0 0 A S של משימות )או אינטרוולים( הזרים בזוגות. ומיין את המשימות לפי זמני סיום לא יורדים )ונוכל להניח מעכשיו ש- f. ( - האינדקס האחרון שהוכנס ו- ו-.4 עבור m 1 n עד a m 4.1 אם בצע: A A { a m זר לכל המשימות ב-, A אז } זו נקודת הסיום שלו(.. O n log n סיבוכיות: ) לא נחתכת הערה: הרעיון הוא שאם המשימה שהסתיימה אחרונה ב- A עם )המזוהה עם האינדקס a m אז אף-אחת לא נחתכת איתו., 1 k טענה- 1 : בסיום האיטרציה ה-, k קיים פיתרון אופטימאלי X כך שלכל * *. I X I X J 14

עצי הופמן וקודים פרפיקסים: נתונים n תווים, רוצים לקודד )להחליף( כל אחד מהם במחרוזת בינארית שונה. המטרה היא למצוא קידוד עבור טקסט המביא למינימום את אורך הטקסט המקודד. מילה: רצף של ביטים. קוד: אוסף לא ריק של מילים. קוד חד-פענח: בהינתן סדרה כלשהי של אותיות, אחרי שנקודד את הסדרה נוכל גם לשחזר אותה. שתי סדרות שונות לא יקודדו לאותה סדרת ביטים. קוד פרפיקסי: קוד שבו אף מילה היא לא פרפיקס של מילה אחרת. קוד פרפיקסי הוא חד-פענח. התאמה בין קודים פרפיקסים לעצים בינאריים: לכל קוד פרפיקסי מתאים עץ בינארי. עלי העץ הם מילות הקוד. יהי T עץ בינארי כזה ותהי x אות שקודדנו. המחרוזת שתייצג את התו x תופיע כמסלול משורש העץ לעלה המתאים. נסמן ב- x תדירות dt את עומק העלה ששווה גם לאורך מילת הקוד שמתאימה ל-. x אם לכל אות x T B T f x d x x, f מספר הביטים הדרוש לקידוד הקובץ הוא: x הוא אופטימאלי )עבור הקוד והתדירות הנתונים( אם הסכום הנ"ל הוא המינימאלי האפשרי. יש. נאמר כי הערה: ניתן להראות כי קוד אופטימאלי ייוצג ע"י עץ בינארי מלא )לכל צומת פנימי שני בנים(. מספר העלים:, n מספר הצמתים הפנימיים:. n 1 למה- 1 : קיים עץ אופטימאלי בו שתי מילים אחים בעלי עומק מקסימאלי. הרעיון: לעבור מבעיה עם n מילים- T x, y בעלות תדירויות מינימאליות מתאימות לזוג עלים,,,,,, 1 1 מילים n 1 בעיה זו עבור 1 1 C w f x f x y f y לבעיה עם כאשר: C w, f,, z, f z. f z f x f y ולאחר שנפתור n 1 מילים, נחליף את z ונתייחס אליה כאל צומת פנימית עם בנים. x, y למה- 2 : יהי C הקוד המתקבל מ- C ע"י החלפת זוג אותיות בעלות תדירויות מינימאליות באות חדשה z כך ש, f z f x f y ויהי T עץ אופטימאלי עבור, C אז העץ T המתקבל מ- T ע"י הפיכת העלה המתאים ל- z לצומת פנימי ולו שני בנים אלגוריתם הופמן רקורסיבי לקוד פרפיקסי אופטימאלי:. C הוא עץ אופטימאלי עבור,,x y :Recure_Huffman(Q) קלט: ערימה. Q פלט: עץ הופמן של איברי. Q 1. אם 4. אחרת, Q 2, קודד אות אחת ב-' 0 ' ואת השנייה ב-' 1 '. x, 4 איברים y 4.1 הוצא מ- Q שתדירותו בעלי תדירות מינימאלית, והכנס ל- Q איבר חדש z. f z f x f y.t סיבוכיות: 4.4 קרא ל- Recure_Huffman(Q) שמחזיר את T. הוסף לעלה המתאים ל- z את x ו- y. O n log n כבנים ב- T, והחזר את העץ שהתקבל- 15

. w יש קבוצה ב"ת גדולה ביותר ממושקלת עם אינטרוולים: נתון אוסף משימות כאשר משימה מאופיינת כמו קודם בזמני התחלה וסיום אבל גם במשקל. למצוא תת-קבוצה ב"ת של אינטרוולים שמשקלה הוא המקסימאלי האפשרי. a,, a 1 המחיר של פיתרון אופטימאלי כלשהו עבור המשימות - opt a שמסתיימים עד - pred האינדקס של האינטרוול שהסתיים מאוחר ביותר מבין האינטרוולים, או 0 אם אין כאלה.. opt נגדיר 0 0. opt opt 1 m ax opt pred w טענה: לכל 1 n מתקיים: A 0, opt 0 0 ומיין את המשימות בסדר לא יורד לפי זמני הסיום. 1. אתחל. pred.4 לכל 1 n מצא את בצע: opt opt pred w אזי: 1 { } A A pred a. opt opt pred w. A A 1 4.1.1 4.1.4 4.4.1 1 n 4.1 אם: 4.4 אחרת: 4. לכל opt opt 1 4.4.4. A n 3. החזר את. O n log n סיבוכיות: y y y y 1 2 n x x x x 1 2 n : n מילה בינארית רחוקה: מרחק בין שתי מחרוזות בינאריות באורך ו- מוגדר להיות:. d w, A m n d w, a : a A A. d x, y [ n] : x y המרחק של מחרוזת w מקבוצת מחרוזות נתון ע"י: w הרעיון: לבנות את w בצורה חמדנית- את המחרוזות ב- A אשר קרובות ביותר ל- w כרגע. קלט: קבוצה A של מחרוזות בינאריות מאורך נקבע לערך ההפוך מהביט ה- המתקבל ע"י רוב. n w k פלט: מחרוזת בינארית כך ש-. d w, A n log k 16

. B A.1 4. עבור על : n מ- 1 עד- 4.1 חשב כמה וקטורים יש ב- B כך שהכניסה ה- -ית שלהם היא 0 וכמה כאלה יש עם 1. w בכניסה זו. אם יש יותר וקטורים עם כניסה 0 קבע, w 1 אחרת: קבע: 0 4.4 הסר מ- B את כל הוקטורים שהכניסה ה- תי- שלהם שונה מהכניסה של. w. B 4.4 אם B ריקה קבע A. O nk סיבוכיות: צביעה של גרפים: c : V N V, E צביעה חוקית: יהא גרף לא מכוון. צביעה חוקית של היא פונקציה כך c. c u שלכל u E מתקיים:. המספר הכרומאטי: המספר המינימאלי של צבעים הדרוש לצביעה של גרף. סימון: נסמן ב- d d d 1 2 n את הדרגות של צמתי הגרף, מסודרים בסדר לא עולה. קלט: גרף לא מכוון V, E וסדר כלשהו על הצמתים.. פלט: צביעה חוקית c של המשתמשת בלכל היותר d 1 1 צבעים. 1. עבור צומת עם הסדר הנתון של הצמתים. יהא הצומת הנוכחי. 4. קבע את c להיות הצבע המינימאלי שאינו בשימוש ע"י שכניו של. O V סיבוכיות: E אלגוריתם חמדן משופר: קלט: גרף לא מכוון. V, E d פלט: צביעה של בלכל היותר 1 צבעים. 1. מיין את צמתי הגרף לפי דרגותיהם, מהגבוה לנמוך. 4. הרץ את האלגוריתם הקודם עם הצמתים מסודרים לפי המיון משלב )1(. סיבוכיות:. O V E log E d הערה: האלגוריתם הוכיח אי-שוויון קומבינטורי מעניין:. 1 שברים מצריים: 0,1 טענה: כל מספר רציונאלי בתחום ניתן לכתיבה כסכום סופי של שברים מצריים שונים. כל עוד אין בידינו דבר מצרי, מצא את השבר המצרי הגדול ביותר שנכנס בתוך )כלומר, הקטן מ( השבר שבידינו- שבר זה יהיה אחד המחוברים. על ההפרש נריץ את האלגוריתם ברקורסיה. 17

כיסוי בצמתים של עצים: כיסוי בצמתים של, V, E כיסוי בצמתים Coer( :)Vertex בהינתן גרף לא מכוון קבוצת צמתים u, לפחות אחד מהצמתים, u E כך שלכל קשת U V U. שייך ל- u הוא הרעיון: נביט בעלה של העץ. יהיה u השכן )היחיד( שלו. כל כיסוי חייב לכסות את הקשת u,u. נבחין כי אין טעם לקחת את לכיסוי שכן מכסה אך ורק את ולכן בהכרח מכיל אחד מבין וזאת לעומת u קלט: עץ לא מכוון שאולי מכסה גם קשתות נוספות.. V, E ב- : פלט: כיסוי צמתים ל-.U.1 4. כל עוד לא קיים עלה.U 4.1 הוסף את, u השכן של ל- 4.4 הסר את כל הקשתות הנוגעות ב-. u. O V E סיבוכיות: טענה- 1 : בכל יער בו יש קשת אחת לפחות, יש שני עלים. ולכן כל עוד יש קשתות בגרף, יש עלה..)U טענה- 2 : לכל קיים כיסוי מינימאלי המכיל את הצמתים,,, 1 2 )סדר הכניסה ל- קידוד הופמן: טענה: אם כל תו מופיע בקובץ בתדירותקטנהממשמ- 13 אזי בהכרח בעץ הופמן לא תהיה מילת קוד מאורך 1. x {0,1} n שהאלגוריתם אינו מכווץ. טענה: לכל אלגוריתם כיווץ ולכל אורך n טבעי, קיימת מילה 18

תכנות דינאמי: סידור אופטימאלי לכפל של n מטריצות:. A A A הסדר 1 2 n A, A,, A 1 2 n נתונה סדרה של n מטריצות: ונרצה לחשב את המכפלה: בו נבצע את ההכפלות ישפיע במידה רבה על סיבוכיות החישוב.. p 1 p A A,, A 1 n קלט: n מטריצות כאשר מטריצה ממימד. A A 1 n פלט: סידור סוגריים אופטימאלי למכפלה, נחזיק מערך דו-מימדי [, ]m, שישמור בכניסה ה- את מספר ההכפלות המינימאלי בהכפלת. m[1, n] ונרצה לקבל כפלט את. A A נחשב את ] m[, באופן רקורסיבי:. m[, ] אז השרשרת מכילה מטריצה בודדת ולכן 0, - אם, אז Ak 1 A k ל-, A,, A בין. m m k m k p p p כעת יש - אם, נניח שיש השמת סוגריים אופטימאלית שמפצלת את [, ] [, ] [ 1, ] 1 k מספר המכפלות עבור A,, A הוא: B1 B2 B1 B2 אפשרויות לבחירת k ולכן: 1 0 m[, ] m n [, ] [ 1] 1 k k m k m k p p p.1 עבור 1 n בצע:. m[, ] 0.) עד n 1 4. עבור 1 בצע: )אורך הרצפים נקבע ע"פ ) l n עד 4.1 עבור l 1 בצע: )המטריצה השמאלית ביותר נקבעת לפי. m l l m l k m k l p p p [, ] mn [, ] [ 1, ] l 1 k l l k l 4.1.1. O n 3 סיבוכיות: 19

אלגוריתם פלויד וורשל למציאת כל המסלולים הקלים ביותר: 0 w, w,, E otherw e פונקצית המשקל המוכללת:,,,. dt d w פונקצית חסם עליון המוכללת: פו' d : V V R שמקיימת:,,, d k d k d אם :, k, כלל שיפור מקומי: עבור השלשה אז:,,,. d d k d k טענה: אם d פונקצית חסם עליון מוכללת והופעל עליה כלל שיפור מקומי, אז אחרי העדכון d נותרה פונקצית חסם עליון מוכללת.. V {1, 2,, n} w : E R פונקצית משקל, V, E קלט: ובה"כ:,,. d dt -, פלט: לכל זוג צמתים לכל זוג צמתים V,,. d w, 1. לכל זוג צמתים בצע:.4 עבור k 1 בצע: עד n, k, בצע שיפור כלומר:, 4.1 לכל זוג צמתים, m n,,,,. d d d k d k k. O V 3 סיבוכיות: רמה- k : מסלולים שמכילים בתור צמתים פנימיים רק צמתים מ- 1 עד- k. אם אין או ל- מ- k משקל המסלול המינימאלי מבין כל המסלולים ברמה ה- : dt k, מסלול כזה. k. d, dt, למה- 1 : לכל, o k n אחרי איטרציה k מתקיים:. dt k k 1, dt, m n k1 1 dt, k dt k, k טענה: לכל : 1 k n 21

a,, a 1 n :Knapack נתון תרמיל גב שלו קיבולת משקל W ונתונים n עצמים מותאם מספר עם משקלים חיוביים המציין את החשיבות של העצם. רוצים להכניס לשק 1n 1n w W p m ax p and w W p a. w,, w לכל עצם 1 n קבוצת עצמים שחשיבותם מקסימאלית. כלומר: a,, a 1 k נסמן ב- F k, w את הרווח המקסימאלי כאשר בוחרים עצמים מתוך התרמיל הוא. w אנו רוצים לחשב את בלבד, וגודל. F n, W F k, w, 0. F k w אחרת: טענה- 1 : אם k 0 או w 0 אז F k 1, w w w k m ax F k 1, w, p F k 1, w w k k otherw e כלומר: אם המשקל חוקי, נרצה את המקסימאלי מבין רצף ההכנסות שכולל את הפריט ורצף ההכנסות שלא כולל את הפריט. צור מטריצה n 1 W ומלא את השורה המתאימה ל k 0 עד לשורה 1 מגודל A המתאימה ל-, k n כאשר כל שורה מלא בסדר כלשהו. את חישוב כניסות המטריצה בצע לפי הנוסחה שבטענה- 1. בסיום החזר את ] W. ]A,n 1 O nw סיבוכיות: )כל כניסה ב- (. O סיבוכיות פסאודו פולינומיאלית. הערה: ניתן למצוא מהו הפיתרון )ולא רק את ערכו( ע"י סימון איזו כניסה עדכנה את הכניסה הנוכחית במטריצה... T V, E קבוצה בלתי תלויה מקסימאלית בעץ: מציאת קבוצה בלתי תלויה מקסימאלית בעץ מכוון הרעיון: נכוון את העץ ונסמן ב- r את השורש. ולכל צומת נסמן: : גודל קבוצה ב"ת מקסימאלית בתת עץ ש- שורשו הכוללת את S -. : גודל קבוצה ב"ת מקסימאלית בתת עץ ש- שורשו שאינה כוללת את S - : גודל קבוצה ב"ת מקסימאלית בתת עץ ש- שורשו, ללא הגבלות. m ax, S S S 1 S S u uchld S S u uchld V S - טענה- 2 : לכל מתקיים: 21

, חשב את. T V, E קלט: עץ לא מכוון פלט: גודל קבוצה בלתי תלויה מקסימאלית. T עם הווריאציה הבאה: בכל פעם שמבצעים נסיגה מצומת 1. הרץ DFS על,,. S S S. S r 4. החזר את. O V E סיבוכיות:. קבוצה בלתי תלויה מקסימאלית בגרף כללי: d V :V. S 4.1 בחר צומת.1 4. כל עוד 4.4 הוסף את ל- בעל דרגה מינימאלית בגרף הנוכחי.. S 4. החזר את 4.4 מחק את ואת כל שכניו _עם הקשתות החלות עליהם( מ- O V. S E סיבוכיות: זו הדרגה המינימאלית בגרף. n 1 משפט: האלגוריתם מחזיר קבוצה ב"ת עם צמתים, כאשר תת-סדרה מונוטונית ארוכה ביותר: a, a,, a 1 2 n תהא הרעיון: נמצא לכל. a k כלומר הערך המבוקש הוא: סדרת מספרים. נחפש תת-סדרה מונוטונית לא יורדת ארוכה ביותר של הסדרה., k אורך תת-סדרה מונוטונית לא יורדת ארוכה ביותר של הסדרה המסתיימת ב- a k. m ax T k : k n : k - A k k and a a קבוצת האינדקסים של כל האיברים שיכולים להופיע לפני. O n 2 T k T A k A k בתת-סדרה מונוטונית. m ax : 1 0 A k O k ניתן לחשב ב- T k טענה: ולקיחת מקסימום על כולם תיתן: סיבוכיות: כל ערך 22

בעיית הסוכן הנוסע האוקלידית הביטונית: נתונות n נקודות במישור, יש לחשב את המעגל הקצר ביותר המחבר את כל הנקודות. מעגל ביטוני: מסלול המתחיל בנקודה השמאלית ביותר, מתקדם ימינה דרך חלק מהנקודות ואז חוזר שמאלה דרך כל הנקודות הנותרות. לפי קואורדינאטת x עולה. ניסוח שקול לבעיה: שני הרעיון: נסמן את הנקודות ב- p, p,, p 1 2 n p n סוכנים שרוצים לנוע מ- p 1 ל- תוך שהם נעים ימינה בלבד, יחדיו מבקרים בכל הנקודות אך אינם. B n מבקרים באותה נקודה. מציאת זוג מסלולים כאלה משרה מסלול ביטוני.. p,, p נרצה לחשב את 1. p, p, - d המרחק בין הנקודות - B אורך מסלול ביטוני קצר ביותר עבור הנקודות. שבה מבקר הסוכן לפני שביקר בנקודה האחרונה- נתנה את המסלול בנקודה- - B,, 1, 1,, 1 B B d d d k k length whrn both fnh at 1 no one t both & 1 d tan ce for 1 t ' tll B m n B, : [ 2] 1 k 1 d tan ce for 2 nd : all dot from 1 to ואז החישוב המבוקש יהיה:. O n 3 סיבוכיות: רווח מקסימאלי בתורת המשחקים: משחק שבו הרווח המקסימאלי של כל שחקן הינו סכום מספריו פחות סכום השחקן השני. הרעיון:. a, a,, a היחס 1, T את הרווח של אליס עבור משחק על הסדרה עבור נסמן ב- T, a max a T 1,, a T, 1 הרקורסיבי הוא היחס הבא:. a : יש רק איבר אחד בסדרה ולכן אין ברירה אלא לקחת אותו ולהרוויח אם אחרת, יש בחירה בין לקחת ל-לקחת. a ואז לפי הבחירה, התור עובר לשחקן השני והסכום שהוא הרוויח עקב בחירה זו, יורק מסכום השחקן הראשון ולכן המינוס. a. O n 2 סיבוכיות: 23

. רשתות זרימה וזרימת מקסימום: אפיוני רשתות זרימה: - קיבולת על הקשתות שחוסמת את כמות הזרימה על כל קשת.. e E - צומת מקור שמייצר זרימה. - צומת בור )או "יעד"( שקולט את הזרימה. - זרימה על הקשתות. תכונות של זרימה ברשתות: נסמן ב- f e את הזרימה על הקשת המכוונת אילוץ הקיבול: הזרימה דרך הקשת e אינה יכולה לחרוג מקיבול הקשת, כלומר:. 0 f e c e שימור הזרימה: לכל הצמתים t}, V \ {, סה"כ הזרימה שנכנסת ל- שיוצאת מ- ערך פונקצית הזרימה: סה"כ הזרימה מהמקור לבור, סימון: או שווה לסה"כ הזרימה.) S F f e f e e S, S e S, S S, S F f. S, t S.. F f e f e en t eout t חתך -t ברשת זרימה: S, S חתך קיבול של חתך כך ש- S V, S V \ S ומתקיים: c S S )סכום קשתות שיוצאת מ S ל- f, c e e S, S S, S : S, S למה- 1 : לכל חתך -t ולכל פונקצית זרימה מסקנה: אפשר לחשב את ערך פונקצית הזרימה מתקיים: ע"י הסתכלות על חתך כלשהו, או ע"י. F c S, S F חישב סה"כ הזרימה מהמקור או ע"י חישוב סה"כ הזרימה לבור. F f S, S למה- 2 : לכל חתך מסקנה: אם קיים חתך -t ולכל פונקצית זרימה כך ש- מתקיים: F c S, S אז היא זרימת מקסימום. f e c e S, S מסלולי שיפור: וזרימה נגדיר שתי קשתות עם קיבול קיבול שיורי: לכל קשת e u, עם קיבול. c e f e. f e u, שיורי: 1. קשת קדמית 4. קשת אחורית עם קיבול עם קיבול הערה: למעשה, קיבול כל קשת הינו סך הזרימה שניתן להזרים עליה בנוסף לזרימה הקיימת. f, u הגרף השיורי: יסומן הוא אוסף כל הקשתות עם קיבול שיורי חיובי ממש. מסלול שיפור: מסלול מ- ל- t בגרף השיורי. 24

למה- 3 : עבור מסלול שיפור הזרימה ב- לקשת אחורית ב- p p תהי בכל קשת המתאימה לקשת קדמית ב- p הקיבול השיורי הקטן ביותר לאורך ונטין את הזרימה ב-, נקבל פונקצית זרימה חוקית כך שערך הזרימה גדל ב-.. p אז א נגדיל את משפט חתך מינימום-זרימת מקסימום Flow( :)Mn Cut Max f תהי פונקצית זרימה ברשת זרימה. N אזי הטענות הבאות שקולות:,, t, c f.1 זרימת מקסימום. 4. אין מסלול שיפור מ- ל- t ברשת השיורית. 4. קיים חתך -t טענה- 1 : אם טענה- 2 : אם S, S עבורו S, S e אז F c S, S )וזהו חתך מינימום(. e כלומר,. f e c e S, S e אזי. f e 0 רוויה. האלגוריתם של Ford-Fulkeron למציאת זרימת מקסימום: האלגוריתם הגנרי: 1. אתחול- זרימה 0 בכל הקשתות. 4. כל עוד קיים מסלול שיפור ע"י הרצת,BFS למשל(. הערות: p מ- ל- t ב- בכל קשת המתאימה, f שפר עליו את הזרימה )ניתן למצוא מסלול שיפור אם הקיבולים על הקשתות לא רציונאליים, לא מובטח שהאלגוריתם יעצור. אם הקיבולים על הקשתות שלמים, האלגוריתם ימצא זרימת מקסימום בשלמים, שהרי יש שיפור * ב- 1 לפחות בכל איטרציה. נשים-לב שמספר האיטרציות עלול להגיע עד ל-, F ערך זרימת המקסימום. סיבוכיות: מספר האיטרציות: *. O f E סה"כ:. O V E זמן לביצוע כל איטרציה:, O * f האלגוריתם של אדמונדס-קרפ: בכל איטרציה בוחרים את מסלול השיפור הקצר ביותר מ- ל-. t,t,, על מסלול קצר ביותר מ- ל- גרעין של רשת זרימה: אוסף קשתות ב- c. S סימון:. t u u S,, t, c טענה- 1 : תהי רשת זרימה ותהי אז הוספת הקשת ל-. S אינה משנה את הגרעין.1 מסקנה: אם נוסיף k קשתות שהפוכות לקשתות גרעין, הגרעין יישמר. טענה- 2 : יהיו ו- שתי רשתות שיוריות באיטרציות עוקבות של האלגוריתם. אז לפחות אחד מהשניים מתקיים: )המסלול הקצר ביותר מתארך(., t, t )גודל הגרעין קטן(. S S.4 מסקנה: מקרה- 1 יכול להתרחש הגרעין יכול היה לקטון בלכל היותר V פעמים לכל היותר. בין שתי פעמים עוקבות שבהן 1 התרחש,. O V E ולכן כמות האיטרציות היא:. E 25

סיבוכיות: איטרציה בודדת לוקחת: האלגוריתם של דיניץ: גרף שכבות: בהינתן גרף שיורי O E ולכן בסה"כ: 2. O E V L f, f גרף השכבות- את הקשתות המעבירות אותנו משכבה אחת לאחרת ועוצר כשמגיע ל-. t f זהו תת-גרף המכיל את כל המסלולים הקצרים ביותר מ- ל-. t סימון: ביותר מ- הוא תת-גרף של הגרף השיורי, המכיל רק - אורך המסלול הקצר ל-. מכיל רק קשתות u ב- הגרף מכיל רק צמתים f עבורן:. f u 1 f. t כך ש- f f זרימה חוסמת בגרף השכבות: זרימה שאין עבורה מסלולי שיפור בגרף השכבות )כלומר, אין מסלולים מכוונים מ- ל- t בגרף השכבות לאחר שמוחקים קשתות עם קיבול אפס(. f e 0.1 לכל קשת 4. כל עוד רשת השכבות L f. e E,, t, c f 4.1 מצא זרימה חוסמת f f f f 4.4 4. החזר את f )שיפור. f טענה- 1 : בסיום ריצת האלגוריתם, טענה- 2 : יהיו f מכילה מסלול מ- ל- : t ברשת השכבות. באמצעות הזרימה החוסמת(. היא זרימת מקסימום של.,, t, c )הראשונה( ו- האלגוריתם של דיניץ. אז מתקיים: )השנייה( שתי רשתות שיוריות באיטרציות עוקבות של., t, t מסקנה: האלגוריתם של דיניץ מבצע לכל היותר מציאת זרימה חוסמת: V f 0.1 e לכל ברשת השכבות. 4. כל עוד יש קשתות שיוצאות מ- סיבוכיות: : איטרציות. 4.1 הרץ DFS מ- עד שתגיע לצומת עם דרגת יציאה 0. 4.4 אם הצומת הזה אינו 4.4 אם הצומת הזה הוא : t 4.4.1 יהי 4.4.4 מוסיפים ל- f, t מוחקים את כל הקשתות שנכנסות אליו. p המסלול מ- ל- t בסריקה הנוכחית. 4.4.4 מוחקים את כל הקשתות ב- p את הזרימה הגדולה ביותר שניתן להזרים על-פני. p. O V E שלא ניתן להזרים עליהן עוד זרימה. 26

b : E R.,, t, c, b זרימה עם חסמים תחתונים: רשת זרימה עם קיבולים עליונים ותחתונים היא: התחתונים על כל קשת. מציין את הקיבולים הערה: לא תמיד קיימת זרימה חוקית, בניגוד לזרימה ללא חסמים תחתונים בה תמיד יש זרימה אפס שהיא חוקית. הכרעה האם יש זרימה חוקית: נבנה רשת זרימה t, N,, בעלת קיבולים עליונים בלבד. c, V V {, t}, E E { t, t} { u, u t : u V } c e c e b e : e ועבור כל E ו-. c t c u b e en e c u t b e eout u. ee b e משפט: קיימת זרימה חוקית ב- N אם"ם קיימת ב- N זרימת מקסימום שערכה הוא: 27

שידוך מקסימום בגרף דו-צדדי: עבור V L R, E גרף דו-צדדי:. M שידוך: תת-קבוצה של קשתות M כך שלכל שתי קשתות אין נקודת קצה משותפת. שידוך מקסימום: שידוך M כך שלכל שידוך M אחר מתקיים: M M. שידוך מושלם: שידוך M כך שכל צומת בגרף היא נקודת קצה של איזושהי קשת מ- מציאת שידוך מקסימום בעזרת זרימה:, V באופן הבא: נגדיר את הגרף המכוון E V V {, t} E, u : u L u, : u E, u L, R, t : R. k טענה- 1 : ב- יש שידוך בגודל k אם"ם ב- יש זרימה בגודל. V L R, E קלט: גרף דו-צדדי פלט: שידוך מקסימום ב-.. c N,, t, c 1. בנה את רשת הזרימה עם כפי שהוגדר לעיל ו- 1 4. הרץ את פורד-פולקרסון לחישוב זרימת מקסימום ב-. N. M u : f u, 1. O V E.4 החזר: סיבוכיות: כיסוי מינימאלי במסלולים: כיסוי במסלולים: יהי V, E גרף מכוון. כיסוי במסלולים של צמתי הוא קבוצת מסלולים זרים בצמתים ב- כך שכל צומת ב- מוכל באחד המסלולים בכיסוי )מסלול עשוי להיות מורכב מצומת יחיד(. הרעיון: לייצג מסלול ע"י כך שנשדך לכל צומת את הצומת העוקב לו במסלול. V L R, E באופן הבא: 1 2 1 2 נגדיר גרף דו-צדדי לא מכוון L { : V } R { : V } E { u : u, E}. n k טענה- 2 : ב- יש כיסוי במסלולים בגודל k אם"ם ב- יש שידוך בגודל. u 1 2 M u.da V, E קלט: גרף פלט: כיסוי מינימאלי במסלולים.. ב- M.1 חשב את. 4. מצא שידוך מינימום 4. החזר כיסוי שקשתותיו הן כל הקשתות כך ש-. O V E סיבוכיות: 28

A נסמן ב-, A משפט החתונה של :Hall הגדרה: יהא V, E גרף לא מכוון. בהינתן קבוצת צמתים את קבוצת A V : u A, השכנים של צמתי, A כלומר: u E. ב-. L R n V L R, E המשפט: יהא גרף דו-צדדי עם קיים שידוך מושלם. A A A אם"ם לכל L מתקיים:, הוא המספר הקשירות בקשתות: קשירות בקשתות: בהינתן גרף לא מכוון, V, E הקשירות בקשתות של המינימאלי של קשתות שהסרתן מ- הופכת אותו ללא קשיר. סימון:. כלשהו בגרף )זהו אינו חתך A, V \ A את מספר הקשתות החוצות חתך e טענה- 1 : נסמן ב- A.)-t אז מתקיים: } V, m n e A : A V, A {, כלומר: מספר הקשתות המינימאלי. E u,,, u : u E ניתן לכל קשת קיבול t,. N,, אז מתקיים: c t.v בחתך כלשהו בגרף. הגדרת רשת זרימה עבור הבעיה: נגדיר גרף מכוון יחידה ונקבע את V, E באופן הבא: להיות צומת שרירותי מ- * f t t נסמן ב- טענה- 2 : V לכל זרימה מקסימאלית ברשת. V, E * mn f : t V t. קלט: גרף לא מכוון וקשיר. פלט: *. f t חשב את.1 חשב את..4 קבע באופן שרירותי, ולכל t. mn f : t V \ { } * t.4 החזר: n ול-.) t * t f n * סיבוכיות: להרצה אחת לחישוב זרימת מקסימום: O Ef O VE )כי לכל 2. O V E הרצות: 29

קונבולוציות והתמרת פורייה המהירה :)FFT( כפל פולינומים:. A x a x n 0, a n 0 נתון פולינום ממעלה n O n 2. a a, a,, a 0 1 n ; O n ייצוג- 1 : שמירת הפולינום בעזרת וקטור המקדמים שלו- ; O n חישוב ערך בנקודה: חיבור שני פולינומים: כפל שני פולינומים:. y A x ייצוג- 2 : פולינום ממעלה n ניתן לייצוג בעזרת n 1 נקודות שמקיימות:, n כך ש-. O n ; O n חיבור שני פולינומים )עבור אותן נקודות (: x מעבר מייצוג ע"י וקטור לייצוג ע"י נקודות: בוחרים ערכי שונים, מציבים ומקבלים את ערכי סיבוכיות הכפל: y המתאימים. x n 1 מעבר מייצוג ע"י נקודות לייצוג ע"י וקטור- משפט האינטרפולציה: A אז קיים פולינום יחיד x x x, y בהינתן n 1 נקודות שונות כך ש- ממעלה-. A x y. 1 2n, A x B x. O n log n סיבוכיות מעבר בין הייצוגים: אלגוריתם יעיל לכפל פולינומים קונבולוציה: ערכים x,, x ונמצא את ערכי הפולינומים 1 2n עבור. C x A x B x.1 נבחר 2 n 4. נחשב את לכל מהערכים שחישבנו- C x1,, C x תוך 2n n 2 c, c,, c 0 1 2 n 2 - C x 4. נחשב את המקדמים של שימוש במשפט האינטרפולציה. הבעיה: בשלב )1(: חישוב ישיר של ערך הפונקציה ממעלה n 1 ב- 2 n נקודות דורש נתגבר על הבעיה ע"י לקיחת נקודות שיש ביניהן קשר: שורשי היחידה המרוכבים. A ב- 2 n שורשי היחידה ב- O n log n צעדים. למה- 1 : ניתן לחשב את x ולכן 2 n C x 2n 1 2n 1 0 0 C x c x והפולינום המתאים למה- 2 : לכל פולינום D x d x כאשר 1 c D w )כלומר נוכל לקבל את מקדמי הפולינום 2n 2 n,2 n D בשורשי היחידה(. מתקיים:, d C w x,2n ע"י חישוב ערכי 31

חיבור איברי קבוצות ביעילות: יהיו n}. A, B {1, 2,, נגדיר: B}. A B { a b : a A, b אלגוריתם לחישוב :A+B. A, B {1, 2,, n} כך ש- n A, קלט: קבוצות B ומספר פלט: הקבוצה. A B n, a x a x b x b x 1 1 n 1. חשב את הפולינומים: כאשר a 1 A 1 B b 0 A 0 B ab k x, המקדם של 1 k 2n.4 חשב את הפולינום: ab x כאשר עבור כל בפולינום הוא:. k A B אם"ם ck אך כך 1. c 2 n a b k k 1.{ : c 1} k 4. החזר:. O n log n סיבוכיות: מחזור מינימאלי של מחרוזת בינארית: 0 1 n 1 תהא מחרוזת בינארית.. ) t מתקיים t t מחזור של מחרוזת: נאמר כי היא בעלת מחזור אם לכל )מודולו סימון: -T המספר המינימאלי t שמקיים תכונות מחזור של מחרוזת.. 0 1 n 1 קלט: מחרוזת בינארית.T פלט: 1 1 1 1 0 1 2 2 n 1 n 1 p x x x x n n 1 1 1 1 2 0 n 1 q x x x n k 1 x, pq כאשר עבור 1 k n 1 המקדם של x 1. חשב את הפולינומים 4. חשב את הפולינום: בפולינום הוא: ולכן 1 1 1 1 1 n n k 2 { : 0 1} k k c n k or n k.) c n k k k אם"ם ל- יש מחזור )ואחרת c n k k. n c n k k 4. החזר את ה- k המינימאלי עבורו ואם לא קיים כזה, החזר:. O n log n סיבוכיות: 31

תרגילים לדוגמא: א. אלגוריתם: 1. נמיין את n האינטרוולים, פעם לפי נקודת התחלה ופעם לפי נקודת הסיום שלהם. )S יכיל את האינטרוולים בכיסוי(. S.4 נאתחל, x 0 4. מצא מבין כל האינטרוולים שמתחילים לפני או בx0 את זה שמסתיים הכי רחוק, נסמנו-. I. I, S S } I ונזרוק את כל האינטרוולים שעברנו עליהם והם לא }.3. x ) I 3. )נקודת הסיום של 3. חוזרים לשלב 1 ומפסיקים כאשר, x 1 כלומר, כאשר האינטרוול שלקחנו לכיסוי מכסה את הנקודה האחרונה בקטע. סיבוכיות: מיון מערך האינטרוולים פעמיים-. O n log n עוברים על מערך האינטרוולים פעם אחת וכל איבר שעברנו זורקים ולכן המעבר ב- O n כי בכל איבר שאנחנו עוברים, מבצעים מספר קבוע של פעולות. נכונות: יהי כי I האינטרוול עם נקודת הסיום הכי גדולה מבין אלה שמכילים את 0. כל כיסוי חוקי חייב להכיל את הנקודה 0. נראה כי קיים כיסוי מינימאלי שמכיל את נניח בשלילה כי הכיסוי האופטימאלי מכיל אינטרוול אחר, I אזי גם. I I מכסה יותר נקודות מ- כן, בהינתן ש- I } I S { I } { הוא כיסוי חוקי והוא כיסוי באותו גודל. מצאנו לכן כיסוי מינימאלי שמכיל את. I כמו- I שייך לכיסוי המינימאלי צריך לכסות את שאר הקטע גם ע"י כיסוי מינימאלי לכן באותה השיטה נעבור על שאר הקטעים ונמצא כיסוי אופטימאלי המכיל את כולם. ולכן האלגוריתן מחזיר כיסוי אופטימאלי. 32

שאלות על אינטרוולים: סעיף ראשון נפתר ע"י אלגוריתם חמדן, מוכיחים ע"י השוואה ליפתרון אופטימאלי והחלפת האיברים בו. סעיף שני עם משקלים ע"י תכנון דינאמי- מוכיחים באינדוקציה או ע"י גרף מסלולים קצרים. שאלות שיש להתאים זוגות- ע"י שידוך. א. )6 נק'( נתון גרף מכוון ופשוט ו- V, E ושני צמתים. t ברצוננו לחשב את המספר המקסימאלי של מסלולים מכוונים זרים בקשתות בין ל-,, t, c. t נגדיר את רשת הזרימה הבאה: N כך ש- 1. e E, c e הוכיחו כי ערך זרימת המקסימום ב N שווה למספר המקסימאלי של מסלולים מכוונים זרים בקשתות בין. t ל- נסמן ב- M את המספר המקסימאלי של מסלולים מכוונים זרים בקשתות בין. t ל- בהינתן זרימה מקסימלית עבור כל קשת בה עוברת זרימה נוסיפה למסלולים המכוונים. כלומר, אם בין u ו- יש זרימה, אזי נאחד את u ו- להיות באותו מסלול., ואת הקשת שלהן נאחד למסלול כמו כן. לא יתכן כי תשתתף קשת אחת בשני מסלולים, כי קיבולת הקשתות היוצאת מ- u היא, 1 כלומר סה"כ הזרימה העוברת דרכו לא יכולה להיות יתר מכמות הקשתות הנכנסות. לכן קיבלנו מסלולים זרים בקשתות, ומן הסתם זה קטן מהמספר המקסימלי האפשרי של מסלולים מכוונים זרים בקשתות בין ל-. t עבור כל 2 קשתות באותו מסלול ובעלות צומת משותף, כלומר: -u-w נעביר זרימה בגודל 1 מהצומת ל- u ומהצומת u ל- w. קיבלנו זרימה חוקית, כי קיבולת הקשתות היוצאת מ- u היא, 1 כלומר סה"כ הזרימה העוברת דרכו לא יכולה להיות יתר מכמות הקשתות הנכנסות אחרת היתה קשת המשתתפת בשני מסלולים. ולכן הזרימה החוקית לבטח קטנה מהזרימה המקסימלית האפשרית..a.b 33